11653번 소인수분해

Day9 9단계 20231026

import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		if (n == 1) { return; }		
		
		// making custom Eratosthenes set(from wikipedia)
		List<Boolean> eratos = new ArrayList<>();
		eratos.add(0, false); eratos.add(1, false);
		for (int i = 2; i <= n; i++) {
			eratos.add(i, true);
		}
		for (int i = 2; i*i <= n; i++) {
			if (eratos.get(i)) {
				for (int j = i*i; j <= n; j+=i) {
					eratos.set(j, false);
				}
			}
		}
		
		int divide = n;
		for(int i = 2; i <= n; i++) {
			if(eratos.get(i)) {
				while (divide%i ==0) {
					System.out.println(i);
					divide /= i;
				}
			}
		}	
		br.close();
	}
}
import java.io.*;

public class Main {
// 내가 왜 굳이 이전에 써먹던 소인수분해 배열을 가져다가 써서 시간이..
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		if (n == 1) { return; }	
		for(int i = 2; i <= n; i++) {
			while (n%i ==0) {
				System.out.println(i);
				n /= i;
			}
		}	
		br.close();
	}
}